<?

include_once($_SERVER['DOCUMENT_ROOT'] . "/includes/loader.inc.php");
error_reporting(E_ERROR | E_PARSE);

// Obtengo la sesion
$session = Session::getInstance();
$_info = $session->getAll();


// Area
$mi_area = Areas::nombre($_info['usuario']['id_area']);

// Instancio las clases necesarias
$caso = new Caso();
$mensajes = new Mensajes();

// Mi ID de usuario
$mi_id = $_REQUEST['info']['mi_id'];

// La URL desde donde vino la info
$url = $_REQUEST['info']['url'];

// Accion a realizar
$accion = $_REQUEST['info']['accion'];
if ($_REQUEST['info']['mover'])
	$accion = 'mover';
	
// ID de los casos
$casos = $_REQUEST['info']['casos'];



/* Firma
************************************************************************************/

// Preparo la firma
$firma_nombre = '<div class=firma><br><b>';
if ($_info['usuario']['configuraciones']['FIRMA_NICK']['valor'])
	$firma_nombre .= $_info['usuario']['configuraciones']['FIRMA_NICK']['valor'];
else
	$firma_nombre .= $_info['usuario']['nombre'] . ' ' . $_info['usuario']['apellido'];
$firma_logo .= '</b><p style="font-size: 11px"><br><a style="text-decoration: none" href="http://elserver.com"><img style="border: none" src="http://www.elserver.com/elserver-firma.gif"/></a>';
$firma_dire .= '<br>Av. de los Incas 3085 (C1426ELA) Capital Federal &middot; Tel: 4556 6400 - Fax: 5236 5583 <br> <a style="text-decoration: none" href="http://twitter.com/elserver">Twitter</a> &middot; <a style="text-decoration: none" href="http://elserver.com/faq">Preguntas Frecuentes</a>  &middot; <a style="text-decoration: none" href="http://elserver.com/blog">Blog</a></p></div>';

// Firma personal
$firma_personal = $firma_nombre . '<br>' . ucfirst($mi_area) . $firma_logo . $firma_dire;

// Firma de area
$firma_area = $firma_nombre . '<br>' . addslashes($_REQUEST['data']['mensaje']['area']) . $firma_logo . $firma_dire;






/* Acciones
************************************************************************************/


/* Tomar casos
--------------------------------------------------------------------------------- */

if ($accion == 'tomar') {
	foreach ($casos as $value_caso) {
		if (!$caso->asignar($mi_id, $value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido tomar con &eacute;xito');
		}
	}
}


/* Renunciar
--------------------------------------------------------------------------------- */

if ($accion == 'renunciar') {
	foreach ($casos as $value_caso) {
		if (!$caso->asignar(0, $value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido renunciar con &eacute;xito');
		}
	}
}

/* Cerrar casos
--------------------------------------------------------------------------------- */

if ($accion == 'cerrar') {
	foreach ($casos as $value_caso) {
		if (!$caso->cerrar($value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido cerrar con &eacute;xito');
		}
	}
	// Lo redirijo al listado en que estaba
	$url = $_info['usuario']['listado'];
}


/* Cerrar casos sin enviar encuesta
--------------------------------------------------------------------------------- */

if ($accion == 'cerrar sin encuesta') {
	$caso->opciones(array('encuesta' => false));
	foreach ($casos as $value_caso) {
		if (!$caso->cerrar($value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha cerrado sin enviar la encuesta de satisfacci&oacute;n');
		}
	}
	// Lo redirijo al listado en que estaba
	$url = $_info['usuario']['listado'];
}

/* Reabrir casos
--------------------------------------------------------------------------------- */

if ($accion == 'reabrir') {
	foreach ($casos as $value_caso) {
		if (!$caso->reabrir($value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido reabrir con &eacute;xito');
		}
	}
}

/* Reactivar casos
--------------------------------------------------------------------------------- */

if ($accion == 'deseliminar') {
	foreach ($casos as $value_caso) {
		if (!$caso->deseliminar($value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido reactivar con &eacute;xito');
		}
	}
}

/* Eliminar casos
--------------------------------------------------------------------------------- */

if ($accion == 'eliminar') {
	$url = $_info['usuario']['listado'];
	foreach ($casos as $value_caso) {
		if (!$caso->eliminar($value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido eliminar con &eacute;xito');
		}
	}
}

/* Fusionar casos
--------------------------------------------------------------------------------- */

if ($accion == 'fusionar') {
	$padre = current($casos);
	array_shift($casos);
	foreach ($casos as $value_caso) {
		if (!$caso->fusionar($value_caso, $padre)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'Los casos se han podido fusionar con &eacute;xito');
		}
	}
}

/* Mover casos
--------------------------------------------------------------------------------- */

if ($accion == 'mover') {

	$destino = explode('::', addslashes($_REQUEST['data']['mover']));
	
	// Cambiar de area
	if ($destino[0]) {
		$id_area = $destino[0];
		foreach ($casos as $value_caso) {
			if (!$caso->mover($id_area, $value_caso)) {
				$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
			} else {
				$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido mover con &eacute;xito');
			}
		}
	}
		
	// Agregar tag
	if ($destino[1]) {
		$id_tag = $destino[1];
		$tags = new Tags();
		foreach ($casos as $value_caso) {
			if (!$tags->agregar($id_tag, $value_caso)) {
				$aviso['error'][] = array($value_caso, $caso->error());
			}
		}
	}

}


/* Asignar casos
--------------------------------------------------------------------------------- */

if ($accion == 'asignar') {
	$id_usuario = addslashes($_REQUEST['data']['id_usuario']);
	foreach ($casos as $value_caso) {
		if (!$caso->asignar($id_usuario, $value_caso)) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido asignar con &eacute;xito');
		}
	}
}


/* Responder mensaje
--------------------------------------------------------------------------------- */

if ($accion == 'responder') {
	$mensaje = $_REQUEST['data'];
	// Agrego los saltos de linea si es texto plano
	if ($_REQUEST['info']['type'] == 'plain')
		$mensaje['mensaje']['contenido'] = nl2br($mensaje['mensaje']['contenido']);
	// Le agrego el contenido citado
	$mensaje['mensaje']['contenido'] .= $_REQUEST['info']['blockquote'];
	// Reemplazo el placeholder de la firma
	$mensaje['mensaje']['contenido'] = str_replace(array('[FP]', '[FA]'), array($firma_personal, $firma_area), $mensaje['mensaje']['contenido']);
	// Envio el mensaje
	foreach ($casos as $value_caso) {
		$id_mensaje = $mensajes->agregar($mensaje, $value_caso);
		if (!$id_mensaje) {
			$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
		} else {
			$aviso['exito'][] = array('caso' => $value_caso, 'texto' => 'El caso se ha podido responder con &eacute;xito', 'link' => array('url' => '/sic/caso/deshacer/' . $id_mensaje, 'texto' => 'Deshacer'));
			// Se lo asigno al operador
			if ($_REQUEST['info']['tomar']) {
				$id_usuario = $_info['usuario']['id'];
				if (!$caso->asignar($id_usuario, $value_caso)) {
					$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
				}
			}
			// Y lo desmarco de siendo respondido
			if (!$caso->siendo_respondido($value_caso, 0)) {
				$aviso['error'][] = array('caso' => $value_caso, 'texto' => $caso->error());
			}
		}
	}
	// Lo redirijo al listado en que estaba
	$url = $_info['usuario']['listado'];
}


/* Redactar mensaje nuevo
--------------------------------------------------------------------------------- */

if ($accion == 'redactar') {
	
	$mensaje = $_REQUEST['data'];
	
	// Agrego los saltos de linea si es texto plano
	if ($_REQUEST['info']['type'] == 'plain')
		$mensaje['mensaje']['contenido'] = nl2br($mensaje['mensaje']['contenido']);
	// Asigno el SSO
	$mensaje['mensaje']['sso'] = $mensaje['mensaje']['destinatario'];
	// Le agrego el contenido citado
	$mensaje['mensaje']['contenido'] .= $_REQUEST['info']['blockquote'];
	// Reemplazo el placeholder de la firma
	$mensaje['mensaje']['contenido'] = str_replace(array('[FP]', '[FA]'), array($firma_personal, $firma_area), $mensaje['mensaje']['contenido']);
	// Defino el asunto
	if ($mensaje['mensaje']['asunto'] == '')
		$mensaje['mensaje']['asunto'] = 'Sin asunto';
	// Creo el caso y envio el mensaje
	$nuevo = array(
		'caso' => array(
			'sso' => $mensaje['mensaje']['sso'],
			'id_area' => $_info['usuario']['id_area'],
			'asunto' => $mensaje['mensaje']['asunto'],
			'id_usuario' => $_info['usuario']['id'],
		)
	);
	$nuevo['mensajes'][] = $mensaje;
	$_casos =  new Casos();
	$envio = $_casos->agregar($nuevo);
	
	// Informo el resultado y elijo el destino
	if (!$envio) {
		$aviso['error'][] = array('texto' => $_casos->error());
		$url = '/sic/caso/redactar/';
	} else {
		$caso_info = $caso->info($envio);
		$aviso['exito'][] = array('caso' => $envio, 'texto' => 'El mensaje ha sido enviado con &eacute;xito', 'link' => array('url' => '/sic/caso/deshacer/' . $caso_info['ultimo_mensaje'], 'texto' => 'Deshacer'));
		$url = '/sic/caso/' . $envio;
	}
	
}



/* Cancelar envio de mensaje
--------------------------------------------------------------------------------- */

if ($accion == 'cancelar') {
	// Mensajes a cancelar
	$mensajes_listado = $_REQUEST['info']['mensajes'];
	foreach ($mensajes_listado as $value_mensaje) {
		if (!$mensajes->outbox_eliminar($value_mensaje)) {
			$aviso['error'][] = array('mensaje' => $value_mensaje, 'texto' => $mensaje->error());
		} else {
			$aviso['exito'][] = array('mensaje' => $value_mensaje, 'texto' => 'El envio del mensaje se ha podido cancelar con &eacute;xito');
		}
	}	
}



/* Redirigimos
************************************************************************************/

// Guardamos la accion
$aviso['accion'] = $accion;

// Ponemos los errores y exitos en un json
$aviso = json_encode($aviso);

// Y lo guardamos en la sesion, para luego mostrarlos por pantalla
$session->setFlash($aviso);

// Vamos hacia la seccion correspondiente
header("Location: $url");

?>
